#ifndef _TIMERANGE_H_
#define _TIMERANGE_H_

#include <Arduino.h>

class TimeRange {
   public:
    // 时间结构体，表示小时、分钟和秒
    struct Time {
        int hour;
        int minute;
        int second;

        // 根据字符串解析, 格式:183030 代表:18:30:30
        static Time formString(String value);

        // 转为字符串
        String toString() const;
    };

    // 构造函数，初始化时间范围
    TimeRange(Time start, Time end);

    // 更新时段
    void updateTimeRange(Time start, Time end);

    // 获取开始时间
    Time getStart() const;

    // 获取结束时间
    Time getEnd() const;

    // 判断当前时间是否在范围内
    bool isWithinRange(int currentHour, int currentMinute,
                       int currentSecond) const;

   private:
    Time start_;  // 开始时间
    Time end_;    // 结束时间

    int startTimeInSeconds_;  // 开始时间（以秒为单位）
    int endTimeInSeconds_;    // 结束时间（以秒为单位）

    // 将时间转换为秒的辅助函数
    static int toSeconds(int hour, int minute, int second);

    // 更新内部秒数表示
    void updateInternalSeconds();
};

#endif  // _TIMERANGE_H_